﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace RegExStudio
{
    static class Program
    {
        /// <summary>
        /// Der Haupteinstiegspunkt für die Anwendung.
        /// </summary>
        /// <param name="args">Ein Dateiname der direkt geöffnet werden soll</param>
        [STAThread]
        static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            //Sammlung der RegEx die bearbeitet wird
            Xml.RegExSet regExSet = null;

            //Es wurde ein Parameter angegeben um eine Datei direkt zu öffnen
            if (args.Count() == 1)
            {
                if (System.IO.File.Exists(args[0]))
                {
                    try
                    {
                        //Datei existiert, also laden
                        regExSet = Xml.RegExSet.LoadFromFile(args[0]);
                    }
                    catch (Exception)
                    {
                        //Datei konnte nicht geöffnet werden (Vermutlich weil das Format nicht stimmt)
                        string errorMessage = string.Format(Properties.Resources.ErrorLoadingFile, args[0]);
                        MessageBox.Show(errorMessage, Properties.Resources.MsgBoxHeaderError, MessageBoxButtons.OK, MessageBoxIcon.Error);
                        regExSet = new Xml.RegExSet();
                        regExSet.InitRegExSet();
                    }
                }
                else
                {
                    //Die Datei existiert nicht, eine neue Sammlung anlegen
                    string errorMessage = string.Format(Properties.Resources.FileNotFound, args[0]);
                    MessageBox.Show(errorMessage, Properties.Resources.RegExStudio, MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    regExSet = new Xml.RegExSet();
                    regExSet.InitRegExSet();
                }
            }
            else if (args.Count() > 1)
            {
                //Werden mehr als ein Parameter übergeben 
                MessageBox.Show(Properties.Resources.ToManyParameters, Properties.Resources.RegExStudio, MessageBoxButtons.OK, MessageBoxIcon.Warning);
                regExSet = new Xml.RegExSet();
                regExSet.InitRegExSet();
                
            }
            else
            {
                //Ohne Parameter einfach eine neue Sammlung starten
                regExSet = new Xml.RegExSet();
                regExSet.InitRegExSet();
            }

            //Los gehts
            Application.Run(new Forms.FormMain(regExSet));
        }
    }
}
